/*
    程序控制流真没啥太深入的东西吧，除了基础语法以外？（真不确定）

    程序控制流基本概念：
        - 顺序结构：程序按顺序执行，从上到下，从左到右。
        - 分支结构：程序根据条件判断，选择执行不同分支。
        - 循环结构：程序重复执行相同代码块。
*/

// ============= 分支结构

// if else语句
void if_else_example()
{
    int a = 10;
    int b = 20;
    int c = 5;
    if (a > b)
    {
        // 条件满足，优先判断
    }
    else if (a == b)
    {
        // 上一个条件不满足，但当前条件满足
    }
    else
    {
        // 如果前两个条件都不满足，则执行此分支
    }

    // if可以嵌套
    if (a > b)
    {
        if (a > c)
            b = c; // 这里是同时满足两个条件，而且如果if后只有一条语句，可以省略{}
        else
        {
            // 这里也可以加else
        }
    }
}

// switch语句  ！！！如果不想写死循环，case后一定要加break
void switch_example()
{
    int a;
    enum Color
    {
        RED,
        GREEN,
        BLUE
    };
    Color color;
    // 这里a 好像只能是 整型或者字符型、枚举，应该没其他的了吧。
    switch (a) // 这里 可以 switch（color）,后面case记得改
    {
    case 1:
        // 条件为1时执行
        break;
    case 2:
        // 条件为2时执行
        break;
    default:
        // 其他情况执行
        // 条件不满足时执行
        break;
    }
}

// 三目运算符 ，这个别写太多给自己搞蒙了就行，因为它可以嵌套。套娃、套娃、还_ _ _ 的套娃！
void ternary_operator_example()
{
    int a = 10;
    int b = 20;
    int c = (a > b) ? a : b; // 条件为真时，返回a的值，否则返回b的值
}

// 循环结构==========

// for for(起始表达式;条件表达式;末尾循环体) { 循环语句; }
void for_example()
{
    // emm 别说 for本身倒是不难，但是组合的东西真不少（也放ob里了）

    for (int i = 0; i < 10; i++)
    { // 循环10次 }
    }

    // 无限循环
    for (;;)
    {
        break; // 跳出循环
    }
}
// while while(条件表达式) { 循环语句; }
void while_example()
{
    // 先判断条件，再执行循环语句
    int i = 0;
    while (i < 10)
    { // 循环10次
        i++;
    }
}

// do while do { 循环语句; } while(条件表达式);
void do_while_example()
{

    // 先执行循环语句，再判断条件
    int i = 10;
    do
    {
        i++;
    } while (i < 10); // 循环10次
    // 这里的循环语句会至少执行一次，所以i=11
    i;
}

// 跳转语句==========

// goto语句，无条件跳转，不推荐使用，容易造成程序流程混乱
// break语句，跳出当前循环
// continue语句，跳过当前循环的剩余语句，直接进入下一次循环
// return语句，结束当前函数，返回值给调用者。